热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

文火|冰糖_[项目管理20]:流水线pipeline与项目管理

篇首语:本文由编程笔记#小编为大家整理,主要介绍了[项目管理-20]:流水线pipeline与项目管理相关的知识,希望对你有一定的参考价值。作者主页(文火冰糖的硅基工坊)

篇首语:本文由编程笔记#小编为大家整理,主要介绍了[项目管理-20]:流水线pipeline与项目管理相关的知识,希望对你有一定的参考价值。


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:



目录

第1章 什么是流水线pipeline技术

1.1 工业流水线的思路

1.2 CPU执行指令的流水线技术

第2章 流水线与软件开发流程

2.1 软件开发过程的划分

2.2 传统的非流水线的软件开发模式:瀑布式开发

2.3 敏捷开发模式:流水线开发

第3章 流水线与项目管理


第1章 什么是流水线pipeline技术


1.1 工业流水线的思路

先以汽车装配为例来解释流水线的工作方式。假设装配一辆汽车需要4个步骤:

1.冲压:制作车身外壳和底盘等部件;

2.焊接:将冲压成形后的各部件焊接成车身;

3.涂装:将车身等主要部件清洗、化学处理、打磨、喷漆和烘干;

4.总装:将各部件(包括发动机和向外采购的零部件)组装成车;

同时对应地需要冲压、焊接、涂装和总装四个工人。

如果不采用流水线,那么第一辆汽车依次经过上述四个步骤装配完成之后,下一辆汽车才开始进行装配,最早期的工业制造就是采用的这种原始的方式。未采用流水线的原始制造方式,同一时刻只有一辆汽车在装配。不久之后就发现,某个时段中一辆汽车在进行装配时,其它三个工人处于闲置状态,显然这是对资源的极大浪费。

于是开始思考能有效利用资源的方法:在第一辆汽车经过冲压进入焊接工序的时候,立刻开始进行第二辆汽车的冲压,而不是等到第一辆汽车经过全部四个工序后才开始。之后的每一辆汽车都是在前一辆冲压完毕后立刻进入冲压工序,这样在后续生产中就能够保证四个工人一直处于运行状态,不会造成人员的闲置。这样的生产方式就好似流水川流不息,因此被称为流水线。

采用流水线的制造方式,同一时刻四辆汽车在装配。


1.2 CPU执行指令的流水线技术

 流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。

流水线是Intel首次在486芯片中开始使用的。

在CPU中由5—6个不同功能电路单元组成一条指令处理流水线,然后将一条指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。

经典奔腾每条整数流水线都分为四级流水,即取指令、译码、执行、写回结果。浮点流水又分为八级流水。

如果没有流水线,则必须操作完一个完整的指令后,才能操作下一条指令,在取指令时,其他单元是空闲的,同理,在执行指令时,译码和回写单元是空闲的,这就是资源的浪费。

采用流水线技术,可以把执行指令分成n道流水线步骤,这样可以并行地操作多条指令,在执行A指令时,就可以译码B指令,同时取C指令,这样可以提升CPU执行指令的效率。

CPU的工作也可以大致分为指令的获取、解码、运算和结果的写入四个步骤,采用流水线设计之后,指令(好比待装配的汽车)就可以连续不断地进行处理。在同一个较长的时间段内,显然拥有流水线设计的CPU能够处理更多的指令。


第2章 流水线与软件开发流程


2.1 软件开发过程的划分

把软件的开发过程分如下的一些步骤:


  • 可行性调研
  • 需求调研
  • 竞品分析
  • 产品设计
  • 需求评审
  • 用例设计
  • 原型评审
  • 设计评审
  • 研发需求确认
  • TC评审
  • 研发排期(表结构设计、开发接口、合并代码、自测、联调、部署)
  • 功能验收
  • 产品推广
  • 部署交付

软件的功能特征的开发步骤,类似于CPU执行指令的步骤,类似安装汽车的步骤。

软件的功能特征,类似与CPU执行的一个个指令,类似与产线上的一台台汽车。

每个环境的功能和开发人员,相当于执行单元:取指令单元、解码指令单元、执行指令单元等等。

如何进行软件功能的开发就存在两种思路:

(1)传统的串行模式

(2)最新的敏捷模式


2.2 传统的非流水线的软件开发模式:瀑布式开发

在瀑布开发模式下,软件开发过程是串行的。

在计划阶段,为所有N个功能统一计划。

在需求分析阶段,为所有N个功能进行需求分析,之后全部完成,才能进入下一个阶段。

在设计阶段也是如此,最后,所有的N个功能都通过测试,才能进入运行维护。


2.3 敏捷开发模式:流水线开发

敏捷开发模式,把个复杂的功能需求,分解成一个个独立的子功能需求,每个只功能需求独立开发。且子功能需求之间,各种独立,且并行开发。类似与CPU的流水线。

这样,软件的功能生产就是按照流水线的方式进行,每天都有新的小的功能增量。如下图所示。


迭代任务:就是一个个 独立的指令,就是一个个小的、可执行的功能。

开发、测试、发布,就是一个个CPU内部的功能单元。

可工作软件,就是一个个CPU执行指令的结果。

在上图中,迭代周期是一周,也就是说,每一周,都有一部分输出。

这样,就持续不断的有新的功能产生,如下图所示。

并行执行(开发)任务/功能特征的个数取决于如下几个因素:

(1)开发流程被切分的步骤:

在每个步骤处理能力一定的情况下,子步骤越多,并行执行的子任务就越多。

(2)每个步骤的处理能力:

在子步骤数量确定的情况下,每个步骤处理的子任务越多(开发团队的数量),并行执行的任务越多。


第3章 流水线与项目管理

在流水线软件开发过程的基础之上,再进一步对项目管理的其他活动进行流水线划分

这就是流水线项目管理。流水线项目管理中,涉及到如下的因素

(1)把软件开发过程按照时间或逻辑的先后顺序分成一个个可以独立实施步骤。

(2)把大型的软件功能,拆分成一个个在2周内可以完成的task

(3)把软件项目管理过程按照时间或逻辑的先后顺序分成一个个可以独立实施步骤。

(4)复杂的项目管理活动,拆分成一个个在2周内可以完成的task。

(5)无论是拆分这个动作、还是最终的软件功能活动,还是项目管理活动,都需要人来完成,就相当于CPU某个执行单元。

(6)人与CPU执行单元不同的是:


  • “人”在项目中的可用性,并不是项目所决定的,而是有职能部门所决定的。
  • ”人“同时为多个项目提供支持,因此,一个项目必须提前N个迭代周期与职能部门对所需要的人力资源进行预约。如果在期望的时间内,无法提供可用的人力资源(包括项目管理人员和软件开发人员),进入流水线管道的task就会受阻。
  • 提前预约,提取申请人力资源,管道式项目管理必须正视的因素,这是影响项目流水线执行的最重要的因素。
  • 只有预先分配资源,项目流水线才能畅通无阻的运行起来。
  • 只有有了人,才能执行项目管理活动,才能对复杂软件的功能呢进行切分,只有有了人,才能持续不断的发布的子功能。没有人,整个流水线都会停止。

如下是项目流水线 pipeline backlog的案例:



推荐阅读
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 开发笔记:9.八大排序
    开发笔记:9.八大排序 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 解决Anaconda安装TensorFlow时遇到的TensorBoard版本问题
    本文介绍了在使用Anaconda安装TensorFlow时遇到的“Could not find a version that satisfies the requirement tensorboard”错误,并提供详细的解决方案,包括创建虚拟环境和配置PyCharm项目。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • JavaScript 基础语法指南
    本文详细介绍了 JavaScript 的基础语法,包括变量、数据类型、运算符、语句和函数等内容,旨在为初学者提供全面的入门指导。 ... [详细]
  • 异常要理解Java异常处理是如何工作的,需要掌握一下三种异常类型:检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常ÿ ... [详细]
  • Java每日一题:876. 链表的中间节点解析
    本文详细介绍了LeetCode上编号为876的题目——链表的中间节点,包括问题描述、解决方案和代码实现。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本文将探讨Java编程语言中对象和类的核心概念,帮助读者更好地理解和应用面向对象编程的思想。通过实际例子和代码演示,我们将揭示如何在Java中定义、创建和使用对象。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 对于许多初学者而言,遇到总线错误(bus error)或段错误(segmentation fault/core dump)是极其令人困扰的。本文详细探讨了这两种错误的成因、表现形式及解决方法,并提供了实用的调试技巧。 ... [详细]
author-avatar
mobiledu2502855247
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有